package com.kinghunt.misp.service.api.userx;

import com.kinghunt.misp.common.dto.userx.UserDTO;
import com.kinghunt.misp.common.dto.userx.UserImportDTO;
import com.kinghunt.misp.common.param.userx.UserParam;
import com.kinghunt.misp.common.param.userx.WeChatUserParam;
import com.bygoodtech.kings.common.dto.ApiResult;

import java.util.List;

/**
 * @author jiangtao
 * @date 2019-10-22 12:59.
 */
public interface UserWriteService {
    /**
     * 注册
     *
     * @param userParam 用户信息
     * @return 用户ID
     */
    ApiResult<Long> addUser(UserParam userParam);

    /**
     * 微信小程序端注册新用户
     *
     * @param param
     * @return
     */
    ApiResult<Long> registerUserInWeChat(WeChatUserParam param);

    /**
     * 更新用户信息
     *
     * @param userParam 用户信息
     * @return 是否成功
     */
    ApiResult updateUserInfo(UserParam userParam);

    /**
     * 修改密码
     *
     * @param userId      用户ID
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 是否成功
     */
    ApiResult updatePassword(long userId, String oldPassword, String newPassword);

    /**
     * 重置密码
     *
     * @param loginUser 登陆用户
     * @param userId 待重置密码用户ID
     * @return
     */
    ApiResult resetPassword(UserDTO loginUser, Long userId);

    ApiResult<Void> registerUser(UserParam user);

    ApiResult<Void> updateUserName(long userId, String userName);

    /**
     * excel批量导入用户
     *
     * @param loginUser 登录用户（根据此入参构造机构信息）
     * @param userImportDTOs
     * @param errorList
     * @return
     */
    ApiResult<Void> importUser(UserDTO loginUser, List<UserImportDTO> userImportDTOs, List<String> errorList);
}
